package visiopuce.ui;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import visiopuce.objets.Prelevement;
import visiopuce.service.PrelevementServiceImpl;

public class NumPrelevDialog extends Dialog {

	private Text tNombre;
	String titre;
	private String numero;

	public NumPrelevDialog(Shell parentShell, String titre, int idPrelevement) {
		super(parentShell);
		this.titre = titre;
		setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL);
		setBlockOnOpen(true);
	}

	@Override
	protected void configureShell(Shell shell) {
		super.configureShell(shell);
		shell.setText(titre);
	}

	@Override
	protected Control createDialogArea(Composite parent) {

		Composite container = (Composite) super.createDialogArea(parent);
		GridLayout layout = new GridLayout(1, false);
		layout.marginRight = 5;
		layout.marginLeft = 10;
		container.setLayout(layout);

		Label lblQuestion = new Label(container, SWT.NONE);
		lblQuestion.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
		lblQuestion.setText("Nouveau numéro (au format : X00-0000 ou XX00-0000)");

		tNombre = new Text(container, SWT.BORDER);

		tNombre.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

		return container;
	}

	@Override
	protected void createButtonsForButtonBar(Composite parent) {
		createButton(parent, IDialogConstants.OK_ID, "Ok", true);
		createButton(parent, IDialogConstants.CANCEL_ID, "Annuler", false);
	}

	@Override
	protected Point getInitialSize() {
		return new Point(255, 198);
	}

	@Override
	protected void okPressed() {
		if (tNombre.getText().length() != 8 && tNombre.getText().length() != 9) {
			MessageDialog.openInformation(Display.getCurrent().getActiveShell(), "Attention", "Mauvais format de numéro (trop long ou trop court).");
		} else if (tNombre.getText().indexOf("-") != 3 && tNombre.getText().indexOf("-") != 4) {
			MessageDialog.openInformation(Display.getCurrent().getActiveShell(), "Attention", "Mauvais format de numéro, un tiret doit être en 4ème position ou 5ème pour les LA et VC.");
		} else {
			Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementByNumero(tNombre.getText());
			if (prel != null) {
				MessageDialog.openInformation(Display.getCurrent().getActiveShell(), "Attention", "Impossible de créer ce numéro il est déjà attribué à un autre dossier!");
			} else {
				numero = tNombre.getText();
				super.okPressed();
			}
		}

	}

	public String getNumero() {
		return numero;
	}

}